c语言a>b?m:n;现实的问题

来源:百度知道 编辑:UC知道 时间:2024/04/28 15:54:38
如果n是里面有优先级比13高的(也就是比条件运算符)运算符,是不是应该先执行n里面的再进行条件运算。
还是先执行条件运算???
#include<stdio.h>
main()
{
int a,b,c;
scanf("%d",&a);
b=1;

a=a>0?a=a+2:++b;
printf("%d\n",a);
printf("%d",b);
}
如果输入-1答案是什么,如果输入1答案又是什么
其实答案分别是a=2,b=2;a=3,b=1

if(a>0)
{
a=a+2;
a=a;
}else
{
++b;
a=b;
}

n里面?
以你的表达式为例
要先执行a>b 然后执行 条件运算符

先做a=a>0的逻辑运算,为真执行a=a+2,为假执行++b
-1结果为-1
2

1结果为3
1

a=a>0?a=a+2:++b;
==>
(a = (a>0)) ? (a = (a+2)) : (++b)

输入-1:
输出:a = -1
b = 2
输入1:
输出:a = 3
b = 1